package com.ocean.productDict.service.impl;

import java.util.Date;
import java.util.List;
import java.util.UUID;

import com.ocean.common.core.domain.entity.SysUser;
import com.ocean.common.utils.ShiroUtils;
import com.ocean.common.utils.uuid.IdUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ocean.productDict.mapper.OProductTypeMapper;
import com.ocean.productDict.domain.OProductType;
import com.ocean.productDict.service.IOProductTypeService;
import com.ocean.common.core.text.Convert;

/**
 * 产品类型Service业务层处理
 *
 * @author ocean
 * @date 2022-12-29
 */
@Service
public class OProductTypeServiceImpl implements IOProductTypeService
{
    @Autowired
    private OProductTypeMapper oProductTypeMapper;

    /**
     * 查询产品类型
     *
     * @param id 产品类型主键
     * @return 产品类型
     */
    @Override
    public OProductType selectOProductTypeById(String id)
    {
        return oProductTypeMapper.selectOProductTypeById(id);
    }

    /**
     * 查询产品类型列表
     *
     * @param oProductType 产品类型
     * @return 产品类型
     */
    @Override
    public List<OProductType> selectOProductTypeList(OProductType oProductType)
    {
        return oProductTypeMapper.selectOProductTypeList(oProductType);
    }

    /**
     * 新增产品类型
     *
     * @param oProductType 产品类型
     * @return 结果
     */
    @Override
    public int insertOProductType(OProductType oProductType) throws Exception
    {
        SysUser sysUser = ShiroUtils.getSysUser();
        oProductType.setCreateName(sysUser.getUserName());
        oProductType.setCreateBy(sysUser.getLoginName());
        oProductType.setCreateDate(new Date());
        oProductType.setDepartId(sysUser.getDeptId().toString());
        oProductType.setId(IdUtils.simpleUUID());
        OProductType o = new OProductType();
        o.setProductCode(oProductType.getProductCode());
        List<OProductType> oProductTypes = oProductTypeMapper.selectOProductTypeList(o);
        if(oProductTypes.size()>0){
            return -3;
        }else{
            return oProductTypeMapper.insertOProductType(oProductType);
        }
    }

    /**
     * 修改产品类型
     *
     * @param oProductType 产品类型
     * @return 结果
     */
    @Override
    public int updateOProductType(OProductType oProductType) throws Exception
    {
        SysUser sysUser = ShiroUtils.getSysUser();
        oProductType.setUpdateName(sysUser.getUserName());
        oProductType.setUpdateBy(sysUser.getLoginName());
        oProductType.setUpdateDate(new Date());
        return oProductTypeMapper.updateOProductType(oProductType);
    }

    /**
     * 批量删除产品类型
     *
     * @param ids 需要删除的产品类型主键
     * @return 结果
     */
    @Override
    public int deleteOProductTypeByIds(String ids) throws Exception
    {
        return oProductTypeMapper.deleteOProductTypeByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除产品类型信息
     *
     * @param id 产品类型主键
     * @return 结果
     */
    @Override
    public int deleteOProductTypeById(String id)
    {
        return oProductTypeMapper.deleteOProductTypeById(id);
    }
}
